تثبيت وإعداد لارافيل على دوكر كومبوز Docker Compose
في عالم تطوير البرمجيات، أصبح من الضروري العمل على بيئات معزولة ومحددة بدقة لضمان استقرار النظام وتكرار بيئة العمل عبر الأنظمة المختلفة. من بين الأدوات التي تسهل هذا الأمر، تبرز أدوات مثل Docker و Docker Compose التي تساعد المطورين في إدارة وتوزيع التطبيقات بسهولة عبر الحاويات (Containers). في هذا المقال، سنتناول خطوة بخطوة كيفية تثبيت وإعداد تطبيق لارافيل (Laravel) على بيئة دوكر باستخدام Docker Compose.
ما هو Docker و Docker Compose؟
Docker هو أداة مفتوحة المصدر تمكّن المطورين من إنشاء وتشغيل تطبيقات معزولة داخل حاويات، وهذه الحاويات تحتوي على كافة الموارد اللازمة لتشغيل التطبيقات مثل المكتبات والإعدادات والبيئة التشغيلية.
أما Docker Compose فهو أداة تساعد في إدارة وتشغيل تطبيقات متعددة الحاويات. باستخدام Docker Compose، يمكن للمطورين تعريف بيئة التطبيقات بكل تفاصيلها في ملف واحد ثم تشغيل كافة الحاويات بنقرة واحدة فقط.
متطلبات النظام
قبل البدء في عملية التثبيت، هناك بعض الأدوات الأساسية التي يجب التأكد من وجودها على النظام:
-
Docker: يمكنك تنزيل Docker من موقعه الرسمي وتثبيته بناءً على نظام التشغيل الذي تستخدمه.
-
Docker Compose: يعتبر Docker Compose جزءًا من Docker ولكنه قد يتطلب تثبيتًا منفصلًا في بعض الحالات.
-
Git: لتثبيت المشروع من مستودع Git أو إذا كنت ترغب في استخدام مستودعاتك الخاصة.
خطوات تثبيت وإعداد لارافيل على دوكر باستخدام Docker Compose
1. تثبيت Docker و Docker Compose
أولاً، تأكد من أنك قد قمت بتثبيت Docker و Docker Compose على جهازك. للحصول على النسخة الأحدث من Docker و Docker Compose، يمكنك زيارة الموقع الرسمي لـ Docker لتحميل النسخ المناسبة لنظام التشغيل الخاص بك.
للتأكد من أن Docker و Docker Compose تم تثبيتهما بشكل صحيح، يمكنك استخدام الأوامر التالية:
bashdocker --version docker-compose --version
إذا كانت الإجابة صحيحة وعرضت الإصدار، فهذا يعني أن التثبيت قد تم بنجاح.
2. إعداد مشروع لارافيل
الخطوة التالية هي إعداد مشروع لارافيل الذي سنقوم بتشغيله على دوكر. يمكنك البدء بمشروع جديد أو استخدام مشروع موجود بالفعل.
إذا كنت تقوم بإنشاء مشروع جديد، استخدم Composer لإنشاء تطبيق لارافيل جديد:
bashcomposer create-project --prefer-dist laravel/laravel laravel-docker
هذه الخطوة ستقوم بإنشاء مشروع لارافيل جديد باسم laravel-docker.
3. إنشاء ملف docker-compose.yml
الملف الأساسي الذي سيتعامل مع تشغيل الحاويات في Docker Compose هو docker-compose.yml. ستحتاج إلى إنشاء هذا الملف في جذر مشروعك. هذا الملف يحدد كافة الخدمات التي تحتاج إليها، مثل خدمة ويب (خادم HTTP) وخدمة قاعدة البيانات.
هنا هو ملف docker-compose.yml الذي يحتوي على إعدادات أساسية:
yamlversion: '3.8'
services:
app:
image: laravelphp/php-fpm
container_name: laravel-app
volumes:
- ./:/var/www/html
networks:
- laravel_network
web:
image: nginx:alpine
container_name: laravel-web
ports:
- "8080:80"
volumes:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
- ./:/var/www/html
networks:
- laravel_network
depends_on:
- app
db:
image: mysql:5.7
container_name: laravel-db
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: laravel
MYSQL_USER: user
MYSQL_PASSWORD: userpassword
volumes:
- db_data:/var/lib/mysql
networks:
- laravel_network
volumes:
db_data:
networks:
laravel_network:
driver: bridge
4. إعداد ملف Nginx
في ملف docker-compose.yml، ذكرنا خدمة nginx التي تحتاج إلى ملف إعدادات خاص بها. يجب عليك إنشاء مجلد nginx داخل جذر المشروع وإنشاء ملف default.conf داخله يحتوي على إعدادات خادم Nginx.
bashmkdir nginx
ثم أنشئ الملف default.conf داخل مجلد nginx:
nginxserver {
listen 80;
server_name localhost;
root /var/www/html/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass app:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
5. تشغيل الحاويات باستخدام Docker Compose
الآن بعد أن قمنا بإعداد جميع الملفات المطلوبة، حان الوقت لتشغيل الحاويات. باستخدام Docker Compose، يمكنك تشغيل جميع الخدمات (التطبيق، خادم الويب، قاعدة البيانات) بأمر واحد:
bashdocker-compose up -d
سوف يقوم Docker Compose بتحميل الصور اللازمة، وإنشاء الحاويات، وتشغيلها في الخلفية.
6. الوصول إلى التطبيق
بمجرد أن يتم تشغيل الحاويات بنجاح، يمكنك الوصول إلى تطبيق لارافيل عبر المتصفح عن طريق الانتقال إلى العنوان التالي:
arduinohttp://localhost:8080
7. التفاعل مع الحاويات
إذا كنت بحاجة إلى الدخول إلى الحاوية الخاصة بتطبيق لارافيل للتفاعل مع سطر الأوامر داخلها (مثل تشغيل artisan أو composer)، يمكنك استخدام الأمر التالي:
bashdocker exec -it laravel-app bash
هذا سيمكنك من التفاعل مع الحاوية بشكل مباشر.
8. إدارة قاعدة البيانات
في ملف docker-compose.yml، قمنا بتحديد إعدادات MySQL لقاعدة البيانات. يمكنك التفاعل مع قاعدة البيانات عبر سطر الأوامر داخل الحاوية باستخدام MySQL CLI:
bashdocker exec -it laravel-db mysql -u user -p
بعد إدخال كلمة المرور (userpassword في هذا المثال)، ستتمكن من التفاعل مع قاعدة البيانات.
9. إعداد بيئة لارافيل
بمجرد أن يتم تشغيل الحاويات بنجاح، ستحتاج إلى إعداد البيئة الخاصة بتطبيق لارافيل. للقيام بذلك، قم بتعديل ملف .env في جذر المشروع ليحتوي على الإعدادات الصحيحة لقاعدة البيانات. يجب أن تتأكد من أن إعدادات الاتصال بقاعدة البيانات تطابق الإعدادات في ملف docker-compose.yml:
iniDB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=user
DB_PASSWORD=userpassword
10. تشغيل الأوامر اللازمة
بعد إعداد البيئة، قد تحتاج إلى تشغيل بعض الأوامر مثل تشغيل المهاجرات (migrations) أو تثبيت الحزم عبر Composer:
bashdocker exec -it laravel-app composer install
docker exec -it laravel-app php artisan migrate
11. التوقف عن العمل وإزالة الحاويات
إذا كنت ترغب في إيقاف الحاويات مؤقتًا، يمكنك استخدام الأمر التالي:
bashdocker-compose down
إذا كنت ترغب في إزالة الحاويات تمامًا مع حذف البيانات المرتبطة بها (مثل قاعدة البيانات)، استخدم:
bashdocker-compose down -v
الخلاصة
من خلال هذه الخطوات، يمكنك بسهولة تثبيت وإعداد تطبيق لارافيل على بيئة دوكر باستخدام Docker Compose. هذه الطريقة تضمن لك بيئة تطوير مستقرة ومعزولة، مما يسهل العمل الجماعي ويساعد في ضمان أن التطبيق سيعمل بنفس الطريقة على جميع الأنظمة. تعتبر دوكر و Docker Compose من الأدوات الضرورية للمطورين الذين يسعون لتبسيط عملية التطوير والنقل والتشغيل، وهي تساهم في جعل سير العمل أكثر سلاسة وكفاءة.

